iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
1
自我挑戰組

SQL Server 資料庫程式設計/管理/經驗筆記系列 第 11 篇

問與答:開發階段(甚至是上線後)不應在資料表中建立關聯

  • 分享至 

  • xImage
  •  

論點

影響開發進度

開發階段若資料表有建立關聯
在整理資料表內容的時候會因為關聯而綁手綁腳
拖慢開發速度

影響資料處理

為何要建立關聯
這樣子進行資料匯入的時候會有問題
為何要多做這種事情來限制自己的行為

答

首先要回到原點
為何資料表與資料表之間要有關聯
關聯可以保持資料的完整性
讓資料表不會出現沒有意義的資料內容(髒資料)
朝向最佳化的資料庫設計邁進

通常在開發階段不建立關聯
上線後基本上都不會補上去
到時資料產生異常時就會耗費更多的成本進行整理

資料表間有設定關聯
能讓接手或是日後再訓練開發人員時
更快了解資料表間的相依關係

不過實務上
小心設定外來鍵參考為 ON DELETE CASCADE
當相依性關係龐大時
若不小心將主要資料刪除時
其他相依的資料列就會自動刪除

沒有關聯的資料表示可以被 TRUNCATE 的
然而 TRUNCATE 與 DELETE 一個重要的差異
TRUNCATE 是不會進事件紀錄
故無法使用事件紀錄來還原到最近的時間點
當然這個指令可透過權限設定等方式進行限制
有設定關聯的資料表變相可避免無心或惡意情況下對資料表執行 TRUNCATE 指令


上一篇
問與答:資料表流水識別碼不應使用自動產生
下一篇
問與答:使用 StoredProc 有資訊安全疑慮
系列文
SQL Server 資料庫程式設計/管理/經驗筆記 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
PPTaiwan
iT邦好手 1 級 ‧ 2019-09-27 12:05:15

讓資料表不會出現沒有意義的資料內容(髒資料)

為何會有髒資料?? 為何會有機會給髒資料的機會寫入到資料庫??

我要留言

立即登入留言